<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<title>UCenter 接口开发手册 - 用户接口</title>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
	<link rel="stylesheet" href="images/style.css" type="text/css" media="all"/>
	<meta content="Comsenz Inc." name="Copyright"/>
	<script type="text/javascript" src="javascript/common.js"></script>
</head>
<body>
<script type="text/javascript" src="javascript/header.js"></script>

<a name="register"></a>
<h3>用户注册</h3>

<div class="submsg">
	<h4><i>{UCenterURL}</i>/api/?/user/register</h4>
	<h5>请求参数</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>参数</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>string</i> username</th>
			<td>用户名</td>
		</tr>
		<tr>
			<th><i>string</i> password</th>
			<td>密码</td>
		</tr>
		<tr>
			<th><i>string</i> email</th>
			<td>电子邮件</td>
		</tr>
		<tr>
			<th><i>integer</i> questionid</th>
			<td>安全提问索引</td>
		</tr>
		<tr>
			<th><i>string</i> answer</th>
			<td>安全提问答案</td>
		</tr>
		<tr>
			<th><i>string</i> regip</th>
			<td>注册ip</td>
		</tr>
		</tbody>
	</table>

	<h5>返回值</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>值</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>integer</i> ret</th>
			<td>
				<em>大于 0:</em>返回用户 ID，表示用户注册成功<br/>
				<em>-1:</em>用户名不合法<br/>
				<em>-2:</em>包含不允许注册的词语<br/>
				<em>-3:</em>用户名已经存在<br/>
				<em>-4:</em>Email 格式有误<br/>
				<em>-5:</em>Email 不允许注册<br/>
				<em>-6:</em>该 Email 已经被注册<br/>
			</td>
		</tr>
		</tbody>
	</table>

	<br/>
	本接口用于新用户的注册。用户名、密码、Email 为一个用户在 UCenter 的基本数据，提交后 UCenter
	会按照注册设置和词语过滤的规则检测用户名和 Email 的格式是否正确合法，如果正确则返回注册后的用户 ID，否则返回相应的错误信息。

</div>

<a name="login"></a>
<h3>用户登录</h3>

<div class="submsg">
	<h4><i>{UCenterURL}</i>/api/?/user/login</h4>
	<h5>请求参数</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>参数</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>string</i> username</th>
			<td>用户名 / 用户 ID / 用户 E-mail</td>
		</tr>
		<tr>
			<th><i>string</i> password</th>
			<td>密码</td>
		</tr>
		<tr>
			<th><i>bool</i> isuid</th>
			<td>
				是否使用用户 ID登录<br/>
				<em>1:</em>使用用户 ID登录<br/>
				<em>2:</em>使用用户 E-mail登录<br/>
				<em>0:</em><strong>(默认值)</strong> 使用用户名登录<br/>
			</td>
		</tr>
		<tr>
			<th><i>bool</i> checkques</th>
			<td>
				是否验证安装提问<br/>
				<em>1:</em>验证安全提问<br/>
				<em>0:</em><strong>(默认值)</strong> 不验证安全提问<br/>
			</td>
		</tr>
		<tr>
			<th><i>integer</i> questionid</th>
			<td>安全提问索引</td>
		</tr>
		<tr>
			<th><i>string</i> answer</th>
			<td>安全提问答案</td>
		</tr>
		</tbody>
	</table>

	<h5>返回值</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>值</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>integer</i> status</th>
			<td>
				<em>大于 0:</em>返回用户 ID，表示用户登录成功<br/>
				<em>-1:</em>用户不存在，或者被删除<br/>
				<em>-2:</em>密码错<br/>
				<em>-3:</em>安全提问错<br/>
			</td>
		</tr>
		<tr>
			<th><i>string</i> username</th>
			<td>用户名</td>
		</tr>
		<tr>
			<th><i>string</i> email</th>
			<td>Email</td>
		</tr>
		</tbody>
	</table>

	<br/>
	本接口用于用户的登录验证，用户名及密码正确无误则返回用户在 UCenter
	的基本数据，否则返回相应的错误信息。如果应用程序是升级过来的，并且当前登录用户和已有用户重名，那么返回的数组中 [4]
	的值将返回 1。
</div>


<a name="login"></a>
<h3>用户授权登录</h3>

<div class="submsg">
	<h4><i>{UCenterURL}</i>/api/?/user/authorize</h4>
	<h5>请求参数</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>参数</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>string</i> callback</th>
			<td>回调地址</td>
		</tr>
		</tbody>
	</table>

	<h5>返回值</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>值</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>string</i> url</th>
			<td>授权登录地址</td>
		</tr>
		</tbody>
	</table>

	<br/>
	本接口用于返回一个用于授权用户登录的界面，请填写验证回调的接口。您也可以不调用此接口，直接跳转到授权登录地址。
</div>

<a name="login"></a>
<h3>验证回调</h3>

<div class="submsg">
	<h4><i>{UCenterURL}</i>/api/?/user/check_code</h4>
	<h5>请求参数</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>参数</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>string</i> code</th>
			<td>/user/authorize 登录后返回的 code 参数</td>
		</tr>
		</tbody>
	</table>

	<h5>返回值</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>值</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>integer</i> ret</th>
			<td>
				<em>0:</em>表示验证成功<br/>
				<em>-1:</em>code 错误<br/>
				<em>-2:</em>用户不存在<br/>
			</td>
		</tr>
		<tr>
			<th><i>integer</i> uid</th>
			<td>UID</td>
		</tr>
		<tr>
			<th><i>string</i> username</th>
			<td>用户名</td>
		</tr>
		</tbody>
	</table>

	<br/>
	本接口用于校验 /user/authorize 返回的 code 参数，校验通过后 code 即失效
</div>


<a name="get_user"></a>
<h3>获取用户数据</h3>

<div class="submsg">
	<h4><i>{UCenterURL}</i>/api/?/user/get_user</h4>
	<h5>请求参数</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>参数</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>string</i> username</th>
			<td>用户名</td>
		</tr>
		<tr>
			<th><i>bool</i> isuid</th>
			<td>
				是否使用用户 ID获取<br/>
				<em>1:</em>使用用户 ID获取<br/>
				<em>0:</em><strong>(默认值)</strong> 使用用户名获取<br/>
			</td>
		</tr>
		</tbody>
	</table>

	<h5>返回值</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>值</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>integer</i> uid</th>
			<td>用户 ID</td>
		</tr>
		<tr>
			<th><i>string</i> username</th>
			<td>用户名</td>
		</tr>
		<tr>
			<th><i>string</i> email</th>
			<td>Email</td>
		</tr>
		</tbody>
	</table>

	<br/>
	本接口用于获取用户在 UCenter 的基本数据，如用户不存在，返回值为 integer 的数值 0。
</div>

<a name="edit"></a>
<h3>更新用户资料</h3>

<div class="submsg">
	<h4><i>{UCenterURL}</i>/api/?/user/edit</h4>
	<h5>请求参数</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>参数</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>string</i> username</th>
			<td>用户名</td>
		</tr>
		<tr>
			<th><i>string</i> oldpw</th>
			<td>旧密码</td>
		</tr>
		<tr>
			<th><i>string</i> newpw</th>
			<td>新密码，如不修改为空</td>
		</tr>
		<tr>
			<th><i>string</i> email</th>
			<td>Email，如不修改为空</td>
		</tr>
		<tr>
			<th><i>bool</i> ignoreoldpw</th>
			<td>
				是否忽略旧密码<br/>
				<em>1:</em>忽略，更改资料不需要验证密码<br/>
				<em>0:</em><strong>(默认值)</strong> 不忽略，更改资料需要验证密码<br/>
			</td>
		</tr>
		<tr>
			<th><i>integer</i> questionid</th>
			<td>安全提问索引</td>
		</tr>
		<tr>
			<th><i>string</i> answer</th>
			<td>安全提问答案</td>
		</tr>
		</tbody>
	</table>

	<h5>返回值</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>值</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>integer</i> ret</th>
			<td>
				<em>1:</em>更新成功<br/>
				<em>0:</em>没有做任何修改<br/>
				<em>-1:</em>旧密码不正确<br/>
				<em>-4:</em>Email 格式有误<br/>
				<em>-5:</em>Email 不允许注册<br/>
				<em>-6:</em>该 Email 已经被注册<br/>
				<em>-7:</em>没有做任何修改<br/>
				<em>-8:</em>该用户受保护无权限更改<br/>
			</td>
		</tr>
		</tbody>
	</table>

	<br/>
	本接口用于更新用户资料。更新资料需验证用户的原密码是否正确，除非指定 ignoreoldpw 为 1。如果只修改 Email
	不修改密码，可让 newpw 为空；同理如果只修改密码不修改 Email，可让 email 为空。
</div>

<a name="delete"></a>
<h3>删除用户</h3>

<div class="submsg">
	<h4><i>{UCenterURL}</i>/api/?/user/delete</h4>
	<h5>请求参数</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>参数</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>integer/array</i> uid</th>
			<td>用户名</td>
		</tr>
		</tbody>
	</table>

	<h5>返回值</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>值</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>integer</i> ret</th>
			<td>
				<em>1:</em>成功<br/>
				<em>0:</em>失败<br/>
			</td>
		</tr>
		</tbody>
	</table>
</div>

<a name="uploadavatar"></a>
<h3>设置用户头像</h3>

<div class="submsg">
	<h4><i>{UCenterURL}</i>/api/?/user/uploadavatar</h4>
	<h5>请求参数</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>参数</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>integer/array</i> uid</th>
			<td>用户名</td>
		</tr>
		<tr>
			<th><i>FILE</i> tmp_name</th>
			<td>上传数据</td>
		</tr>
		</tbody>
	</table>
</div>

<a name="deleteavatar"></a>
<h3>删除用户头像</h3>

<div class="submsg">
	<h4><i>{UCenterURL}</i>/api/?/user/deleteavatar</h4>
	<h5>请求参数</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>参数</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>integer/array</i> uid</th>
			<td>用户名</td>
		</tr>
		</tbody>
	</table>
</div>

<a name="synlogin"></a>
<h3>同步登录</h3>

<div class="submsg">
	<h4><i>{UCenterURL}</i>/api/?/user/synlogin</h4>
	<h5>请求参数</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>参数</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>integer</i> uid</th>
			<td>用户 ID</td>
		</tr>
		</tbody>
	</table>

	<h5>返回值</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>值</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>string</i></th>
			<td>同步登录的 HTML 代码</td>
		</tr>
		</tbody>
	</table>

	<br/>
	如果当前应用程序在 UCenter 中设置允许同步登录，那么本接口会通知其他设置了同步登录的应用程序登录，把返回的 HTML
	输出在页面中即可完成对其它应用程序的通知。输出的 HTML 中包含执行远程的 javascript
	脚本，请让页面在此脚本运行完毕后再进行跳转操作，否则可能会导致无法同步登录成功。同时要保证同步登录的正确有效，请保证其他应用程序的
	Cookie 域和 Cookie 路径设置正确。
</div>

<a name="synlogout"></a>
<h3>同步退出</h3>

<div class="submsg">
	<h4><i>{UCenterURL}</i>/api/?/user/synlogout</h4>
	<h5>返回值</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>值</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>string</i></th>
			<td>同步退出的 HTML 代码</td>
		</tr>
		</tbody>
	</table>

	<br/>
	如果当前应用程序在 UCenter 中设置允许同步登录，那么本接口会通知其他设置了同步登录的应用程序退出登录，把返回的
	HTML 输出在页面中即可完成其它应用程序的通知。输出的 HTML 中包含执行远程的 javascript
	脚本，请让页面在此脚本运行完毕后再进行跳转操作，否则可能会导致无法同步退出登录。同时要保证同步退出登录的正确有效，请保证其他应用程序的
	Cookie 域和 Cookie 路径设置正确。
</div>

<a name="check_email"></a>
<h3>检查 Email 地址</h3>

<div class="submsg">
	<h4><i>{UCenterURL}</i>/api/?/user/check_email</h4>
	<h5>请求参数</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>参数</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>string</i> email</th>
			<td>Email</td>
		</tr>
		</tbody>
	</table>

	<h5>返回值</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>值</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>integer</i> ret</th>
			<td>
				<em>1:</em>成功<br/>
				<em>-4:</em>Email 格式有误<br/>
				<em>-5:</em>Email 不允许注册<br/>
				<em>-6:</em>该 Email 已经被注册<br/>
			</td>
		</tr>
		</tbody>
	</table>

	<br/>
	本接口用于检查用户输入的 Email 的合法性。
</div>

<a name="check_username"></a>
<h3>检查用户名</h3>

<div class="submsg">
	<h4><i>{UCenterURL}</i>/api/?/user/check_username</h4>
	<h5>请求参数</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>参数</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>string</i> username</th>
			<td>用户名</td>
		</tr>
		</tbody>
	</table>

	<h5>返回值</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>值</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>integer</i> ret</th>
			<td>
				<em>1:</em>成功<br/>
				<em>-1:</em>用户名不合法<br/>
				<em>-2:</em>包含要允许注册的词语<br/>
				<em>-3:</em>用户名已经存在<br/>
			</td>
		</tr>
		</tbody>
	</table>

	<br/>
	本接口用于检查用户输入的用户名的合法性。
</div>

<a name="addprotected"></a>
<h3>添加保护用户</h3>

<div class="submsg">
	<h4><i>{UCenterURL}</i>/api/?/user/addprotected</h4>
	<h5>请求参数</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>参数</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>string/array</i> username</th>
			<td>保护用户名</td>
		</tr>
		<tr>
			<th><i>string</i> admin</th>
			<td>操作的管理员</td>
		</tr>
		</tbody>
	</table>

	<h5>返回值</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>值</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>integer</i> ret</th>
			<td>
				<em>1:</em>成功<br/>
				<em>-1:</em>失败<br/>
			</td>
		</tr>
		</tbody>
	</table>

	<br/>
	本接口用于添加被保护的用户。
</div>

<a name="deleteprotected"></a>
<h3>删除保护用户</h3>

<div class="submsg">
	<h4><i>{UCenterURL}</i>/api/?/user/deleteprotected</h4>
	<h5>请求参数</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>参数</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>string/array</i> username</th>
			<td>保护用户名</td>
		</tr>
		</tbody>
	</table>

	<h5>返回值</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>值</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>integer</i> ret</th>
			<td>
				<em>1:</em>成功<br/>
				<em>-1:</em>失败<br/>
			</td>
		</tr>
		</tbody>
	</table>

	<br/>
	本接口用于删除被保护的用户。
</div>

<a name="getprotected"></a>
<h3>得到受保护的用户名列表</h3>

<div class="submsg">
	<h4><i>{UCenterURL}</i>/api/?/user/getprotected</h4>
	<h5>返回值</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>值</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>array</i></th>
			<td>
				受保护的用户数据
			</td>
		</tr>
		</tbody>
	</table>

	<br/>
	本接口用于获得被保护的用户列表。
</div>

<a name="merge"></a>
<h3>把重名用户合并到 UCenter</h3>

<div class="submsg">
	<h4><i>{UCenterURL}</i>/api/?/user/merge</h4>
	<h5>请求参数</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>参数</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>string</i> oldusername</th>
			<td>老用户名</td>
		</tr>
		<tr>
			<th><i>string</i> newusername</th>
			<td>新用户名</td>
		</tr>
		<tr>
			<th><i>integer</i> uid</th>
			<td>用户 ID</td>
		</tr>
		<tr>
			<th><i>string</i> password</th>
			<td>密码</td>
		</tr>
		<tr>
			<th><i>string</i> email</th>
			<td>电子邮件</td>
		</tr>
		</tbody>
	</table>

	<h5>返回值</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>值</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>integer</i> ret</th>
			<td>
				<em>大于 0:</em>返回用户 ID，表示用户注册成功<br/>
				<em>-1:</em>用户名不合法<br/>
				<em>-2:</em>包含不允许注册的词语<br/>
				<em>-3:</em>用户名已经存在<br/>
			</td>
		</tr>
		</tbody>
	</table>

	<br/>
	本接口用于把重名的用户合并到 UCenter。
</div>

<a name="merge_remove"></a>
<h3>移除重名用户记录</h3>

<div class="submsg">
	<h4><i>{UCenterURL}</i>/api/?/user/merge_remove</h4>
	<h5>请求参数</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>参数</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>string</i> username</th>
			<td>用户名</td>
		</tr>
		</tbody>
	</table>

	<br/>
	本接口用于移除重名用户记录中的指定记录，如果应用程序已处理完该重名用户，可以执行此接口函数。
</div>

<a name="getcredit"></a>
<h3>获取指定应用的指定用户积分</h3>

<div class="submsg">
	<h4><i>{UCenterURL}</i>/api/?/user/getcredit</h4>
	<h5>请求参数</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>参数</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>integer</i> appid</th>
			<td>
				应用 ID
			</td>
		</tr>
		<tr>
			<th><i>integer</i> uid</th>
			<td>
				用户 ID
			</td>
		</tr>
		<tr>
			<th><i>integer</i> credit</th>
			<td>
				积分编号
			</td>
		</tr>
		</tbody>
	</table>

	<h5>返回值</h5>
	<table border="0" cellspacing="0" cellpadding="0" class="msgtable">
		<thead>
		<tr>
			<th>值</th>
			<td>含义</td>
		</tr>
		</thead>
		<tbody>
		<tr>
			<th><i>integer</i></th>
			<td>
				积分
			</td>
		</tr>
		</tbody>
	</table>

	<br/>
	本接口用于获取指定应用的指定用户积分。
</div>

<script type="text/javascript" src="javascript/footer.js"></script>
</body>
</html>